/******************************************************************************* * Copyright (c) 2000, 2005 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.ant.tests.core.testplugin; import org.eclipse.ant.core.AntRunner; import org.eclipse.ant.tests.core.AbstractAntTest; import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.CoreException; /** * Responsible for running test ant build files. */ public class AntFileRunner { private static final String BASE_DIR_PREFIX = "-Dbasedir="; //$NON-NLS-1$ public void run(IFile buildFile, String[] targets, String[] args, String baseDir, boolean captureOutput) throws CoreException { AntRunner runner = new AntRunner(); String[] runnerArgs = args; if (baseDir.length() > 0) { // Ant requires the working directory to be specified // as one of the arguments, so it needs to be appended. int length = 1; if (args != null) { length = args.length + 1; } runnerArgs = new String[length]; if (args != null) { System.arraycopy(args, 0, runnerArgs, 0, args.length); } runnerArgs[length - 1] = BASE_DIR_PREFIX + baseDir; } runner.setArguments(runnerArgs); if (buildFile != null) { runner.setBuildFileLocation(buildFile.getLocation().toFile().toString()); } if (targets != null && targets.length > 0) { runner.setExecutionTargets(targets); } if (captureOutput) { runner.addBuildLogger(AbstractAntTest.ANT_TEST_BUILD_LOGGER); } runner.run(null); } public void run(String[] args, String baseDir) throws Exception { AntRunner runner = new AntRunner(); String[] runnerArgs = args; if (baseDir.length() > 0) { // Ant requires the working directory to be specified // as one of the arguments, so it needs to be appended. runnerArgs = new String[args.length + 1]; System.arraycopy(args, 0, runnerArgs, 0, args.length); runnerArgs[args.length] = BASE_DIR_PREFIX + baseDir; } runner.setArguments(runnerArgs); runner.run(args); } }